/*
 * Atendimento.java
 *
 * Created on October 12, 2007, 10:46 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package petstore.model;

import petstore.model.enumeration.SituacaoAtendimento;
import java.util.Date;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;

/**
 * Entity class Atendimento
 * 
 * @author Tom Hayden
 */
@Entity
@Table(name = "atendimento")
@AttributeOverrides( {
        @AttributeOverride(name="id", column=@Column(name="cdatendimento")),
        @AttributeOverride(name="description", column=@Column(name="txobservacao")),
        @AttributeOverride(name="active", column=@Column(name="ativo"))
    })
public class Atendimento extends CodeData {

    @Column(name = "dthragendamento")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dataHoraAgendamento;

    @Column(name = "dthratendimento")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dataHoraAtendimento;

    @Column(name = "statendimento")
    @Enumerated(EnumType.ORDINAL)
    private SituacaoAtendimento situacaoAtendimento;

    @Version
    private Integer versao;

    @ManyToOne(cascade=CascadeType.REFRESH)
    @JoinColumn(name="cdanimal")
    private Animal animal;

    @ManyToOne(cascade=CascadeType.REFRESH)
    @JoinColumn(name="cdcliente")
    private Cliente cliente;

    @ManyToOne(cascade=CascadeType.REFRESH)
    @JoinColumn(name="cdfuncionario")
    private Funcionario funcionario;

    @ManyToOne(cascade=CascadeType.REFRESH)
    @JoinColumn(name="cdtipoatdmto")
    private TipoAtendimento tipoAtendimento;
    
    /** Creates a new instance of Atendimento */
    public Atendimento() {
        this.situacaoAtendimento = SituacaoAtendimento.NAO_ATENDIDO;
    }

    public Date getDataHoraAgendamento() {
        return dataHoraAgendamento;
    }

    public void setDataHoraAgendamento(Date dataHoraAgendamento) {
        this.dataHoraAgendamento = dataHoraAgendamento;
    }

    public Date getDataHoraAtendimento() {
        return dataHoraAtendimento;
    }

    public void setDataHoraAtendimento(Date dataHoraAtendimento) {
        this.dataHoraAtendimento = dataHoraAtendimento;
    }

    public SituacaoAtendimento getSituacaoAtendimento() {
        return situacaoAtendimento;
    }

    public void setSituacaoAtendimento(SituacaoAtendimento situacaoAtendimento) {
        this.situacaoAtendimento = situacaoAtendimento;
    }

    public Integer getVersao() {
        return versao;
    }

    public void setVersao(Integer versao) {
        this.versao = versao;
    }

    public Animal getAnimal() {
        return animal;
    }

    public void setAnimal(Animal animal) {
        this.animal = animal;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public TipoAtendimento getTipoAtendimento() {
        return tipoAtendimento;
    }

    public void setTipoAtendimento(TipoAtendimento tipoAtendimento) {
        this.tipoAtendimento = tipoAtendimento;
    }

}
